#include <STC15F2K60S2.H>
#include "intrins.h"
#include "mokuai.h"
#include "en555.h"

sbit tx = P1^0;
sbit rx = P1^1;
unsigned int l = 0,l_count = 99;
//unsigned char k_number = 0,n = 0,k_flag = 0;
//unsigned int sum = 0;
//unsigned int Count = 0;         //定义计数变量，计算频率
//unsigned int Frequence = 0;     //频率
//void System_Init(void);
unsigned int chao_return(void);
void main(void)
{
	Latch(0xa0,0x00);
	
//	System_Init();
	//Timer_Init();
//	Timer2Init();
	while(1)
	{
//		if(k_flag)
//		{
//			sum = ad_read(0x43);
//		k_number = Key();
//			k_flag = 0;
//		}
//		if(k_number == 1)
//			n++;
//		if(k_number == 2)
//			n--;
//		nixie(1,n/10);
//		nixie(2,n%10);
//		nixie(4,sum/100);
//		nixie(5,sum/10%10);
//		nixie(6,sum%10);
		
//		nixie(1,Frequence/10000);
//		nixie(2,Frequence/1000%10);
//		nixie(3,Frequence/100%10);
//		nixie(4,Frequence/10%10);
//		nixie(5,Frequence%10);
if(++l_count == 100)
{
	l_count = 0;
	 l = chao_return();
}
	nixie(3,l/100%10);
	nixie(4,l/10%10);
	nixie(5,l%10);
	}
}

//void timer2()interrupt 12 using 1
//{
//	static unsigned char k_count = 0;
//	T2L = 0x90;		//设置定时初值
//	T2H = 0xE8;		//设置定时初值
//	if(++k_count == 20)
//	{
//		k_count = 0;
//		k_flag = 1;
//	}
//}

//// 通道选择函数
//void HC138_Init( unsigned char channel )
//{
//	switch( channel )
//	{
//		case 0:
//			P2 = (P2 & 0x1f) | 0x00;	// 0
//		break;
//		case 4:
//			P2 = (P2 & 0x1f) | 0x80;	// Y4C
//		break;
//		case 5:
//			P2 = (P2 & 0x1f) | 0xa0;	// Y5C
//		break;
//		case 6:
//			P2 = (P2 & 0x1f) | 0xc0;	// Y6C
//		break;
//		case 7:
//			P2 = (P2 & 0x1f) | 0xe0;	// Y7C
//		break;
//	}
//}

//// 初始化系统
//void System_Init(void)
//{
//    // 关闭LED灯
//	HC138_Init( 4 );
//	P0 = 0xff;
// 
//    // 关闭蜂鸣器和继电器
//	HC138_Init( 5 );
//	P0 = 0xaf;		    // 1010 1111
//	
//    // 关闭通道选择
//	HC138_Init( 0 );
//}

////定时器0中断服务函数
//void Timer0_Handler() interrupt 1
//{
//    Count++;        //频率加一
//}
////定时器1中断服务函数，，每1ms触发一次
//void Timer1_Handler() interrupt 3
//{
//    static int i =0;

//    i++;
//    if(i>=1000)     //1s进来一次
//    {
//        Frequence = Count;  //读取当前的频率值
//        Count = 0;          //Count清零
//        i = 0;              //i清零
//    }
//}

void Delay12us()		//@12.000MHz
{
	unsigned char i;

	_nop_();
	_nop_();
	i = 33;
	while (--i);
}


void chao_inti(void)
{
	unsigned char i;
	for(i = 0;i<8;i++)
	{
		tx = 1;
		Delay12us();
		tx = 0;
		Delay12us();
	}
}

unsigned int chao_return(void)
{
	unsigned int time = 0;
	TMOD &= 0X0F;
	TH1 = 0x00;
	TL1 = 0x00;
	chao_inti();
	TR1 = 1;
	while((rx == 1) && (TF1 == 0));
	TR1 = 0;
	if(TF1 == 0)
	{
		time = TH1;
		time = (time << 8) | TL1;
		return (time*0.017)+3;
	}
	else
	{
		TF1 = 0;
		return 0;
	}
}
